<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html>
<html lang="en">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<!-- legacymodules.qdoc -->
  <title>Legacy Modules | Qt QML 5.12.3</title>
  <link rel="stylesheet" type="text/css" href="style/offline-simple.css" />
  <script type="text/javascript">
    document.getElementsByTagName("link").item(0).setAttribute("href", "style/offline.css");
    // loading style sheet breaks anchors that were jumped to before
    // so force jumping to anchor again
    setTimeout(function() {
        var anchor = location.hash;
        // need to jump to different anchor first (e.g. none)
        location.hash = "#";
        setTimeout(function() {
            location.hash = anchor;
        }, 0);
    }, 0);
  </script>
</head>
<body>
<div class="header" id="qtdocheader">
  <div class="main">
    <div class="main-rounded">
      <div class="navigationbar">
        <table><tr>
<td ><a href="../qtdoc/index.html">Qt 5.12</a></td><td ><a href="qtqml-index.html">Qt QML</a></td><td >
			遗留模块</td></tr></table><table class="buildversion"><tr>
<td id="buildversion" width="100%" align="right"><a href="qtqml-index.html">Qt 5.12.3 参考指南</a></td>
        </tr></table>
      </div>
    </div>
<div class="content">
<div class="line">
<div class="content mainContent">
<div class="sidebar">
<div class="toc">
<h3><a name="toc">目录</a></h3>
<ul>
<li class="level1"><a href="#installed-legacy-modules">安装遗留模块</a></li>
<li class="level1"><a href="#located-legacy-modules">定位遗留模块</a></li>
</ul>
</div>
<div class="sidebar-content" id="sidebar-content"></div></div>
<h1 class="title">遗留模块</h1>
<span class="subtitle"></span>
<!-- $$$qtqml-modules-legacymodules.html-description -->
<div class="descr"> <a name="details"></a>
<p>
遗留模块是指其规范qmldir文件不包含模块标识符指令的模块。遗留模块可以安装到QML导入路径中(作为已安装的遗留模块)，也可以由客户端通过相对导入(作为已定位的遗留模块)导入。如果可能，建议客户避免使用遗留模块。模块开发人员应该确保他们创建的是已标识的模块，而不是遗留模块。</p>
<a name="installed-legacy-modules"></a>
<h2 id="installed-legacy-modules">安装遗留模块</h2>
<p>QML引擎会自动为已安装的、未标识的模块提供标识符。这个隐式定义的标识符等于模块的安装路径(相对于QML导入路径)，其中目录分隔符被句点字符替换。</p>
<p>安装到QML导入路径中的非标识模块具有以下语义:</p>
<ul>
<li>客户端可以通过隐式模块标识符导入它</li>
<li>客户端在导入模块时必须指定一个版本</li>
<li>冲突类型名称由QML引擎任意解决，并且不能保证在不同版本的QML之间解决冲突的方式保持相同</li>
<li>其他遗留模块可能会修改或覆盖已安装的遗留模块提供的类型定义</li>
</ul>
<a name="located-legacy-modules"></a>
<h2 id="located-legacy-modules">定位遗留模块</h2>
<p>通过相对目录路径import语句导入的未识别模块将被引擎作为定位的遗留模块加载。以下语义适用于定位的遗留模块:</p>
<ul>
<li>客户端可以通过相对导入路径导入它</li>
<li>客户端在导入模块时不一定要指定版本</li>
<li>如果客户端在导入语句中没有提供导入版本，QML引擎就不能保证将导入给定类型名定义的哪个版本</li>
<li>冲突类型名称由QML引擎任意解决，并且不能保证在不同版本的QML之间解决冲突的方式保持相同</li>
<li>其他遗留模块可能会修改或覆盖由所定位的遗留模块提供的类型定义</li>
</ul>
<p>已定位的遗留模块可能驻留在本地文件系统或网络上，可以通过指定文件系统路径或网络URL的URL来引用。</p>
</div>
<!-- @@@qtqml-modules-legacymodules.html -->
        </div>
       </div>
   </div>
   </div>
</div>
<div class="footer">
   <p>
   <acronym title="Copyright">&copy;</acronym> 2019 The Qt Company Ltd.
   Documentation contributions included herein are the copyrights of
   their respective owners.<br/>    The documentation provided herein is licensed under the terms of the    <a href="http://www.gnu.org/licenses/fdl.html">GNU Free Documentation    License version 1.3</a> as published by the Free Software Foundation.<br/>    Qt and respective logos are trademarks of The Qt Company Ltd.     in Finland and/or other countries worldwide. All other trademarks are property
   of their respective owners. </p>
</div>
</body>
</html>
